PROGRAMACIÓN
ORIENTADA A
AGENTES

“Controlar la complejidad es la esencia de la programación” (Brian Kernigan)

“Solo podemos entender algo si podemos programarlo” (Gregory Chaitin)



El concepto de agente

Un agente es una entidad computacional que reside en un entorno dinámico que tiene la capacidad de percibir y actuar autónomamente sobre dicho entorno. De esta manera, es capaz de cumplir un conjunto de objetivos o llevar a cabo ciertas tareas para las cuales fue diseñado.

Este paradigma de ingeniería de software ha surgido con gran fuerza en los últimos años, pues es especialmente adecuado para la resolución de problemas complejos, principalmente del campo de la inteligencia artificial. Además constituye una forma muy adecuada para la creación de modelos del mundo real.

La descomposición de un problema en agentes representa la forma más radical de aplicación de la filosofía “divide y vencerás”, en donde cada agente se ocupa de una parte del problema y en donde todos los agentes colaboran y coordinan sus actividades para la consecución de un objetivo final.


Tipos de agentes

Existen muchas clases de agentes. Algunos ejemplos son:
Características de los agentes

Un agente es una entidad computacional que tiene las características identificativas siguientes: Otras características adicionales que pueden poser los agentes son:
Desarrollo tradicional con agentes

Históricamente, la programación orientada a agentes se ha soportado por la integración de dos paradigmas: el paradigma de la orientación a objetos y el paradigma lógico. Un agente se construía como un objeto y su comportamiento se implementaba mediante claúsulas lógicas. Un ejemplo de este tipo de enfoque es JavaLog, un lenguaje mezcla de Java (programación orientada a objetos) y Prolog (programación lógica), en la que un agente es un objeto Java que hace referencia a un módulo lógico (que contiene las claúsulas lógicas).

Aunque actualmente hay muchas aplicaciones implementadas con la tecnología de agentes, el tema no ha alcanzado todavía madurez y popularidad suficientes, debido principalmente a:
Agentes vs. Objetos

Existe una cierta analogía entre el paradigma objetual y el de agentes: Una diferencia importante es que las metodologías de orientación a objetos no se pueden emplear directamente en la orientación a agentes.


Agentes vs. Procesos

Los agentes recuerdan a los procesos de un sistema multiproceso (por ejemplo, un sistema operativo). Pero la diferencia estriba en que un agente tiene autonomía, “sabe” cuando tiene que actuar, mientras que un proceso debe ser invocado explícitamente para que actúe.

Los agentes normalmente actúan de forma concurrente. En el tema del acceso a recursos compartidos, por parte de diferentes agentes, se plantean los mismos problemas que en la programación concurrente.


Agentes inteligentes

El término “agente inteligente” se comenzó a usar en los años 1980´s en el subdominio de la inteligencia artificial llamado “inteligencia artificial distribuida” (IAD). Su concepto era el de un objeto con inteligencia incorporada o autocontenida. En IAD los agentes inteligentes tienen un comportamiento colectivo y cooperativo.


Los agentes y la interoperabilidad del software

La tecnología de agentes se ha propuesto como un sistema para lograr la interoperabilidad del software, mediante una ontología común:
Sistema multi-agente

Consta de los siguientes elementos: Un sistema multi-agente puede contener agentes cooperativos y no cooperativos. En ambos casos, cada agente (sea cooperativo o no) siempre contribuye al funcionamiento global del sistema.


Desarrollo de Agentes con MENTAL

MENTAL es un lenguaje de supremo nivel de abstracción, de paradigma universal, que posibilita la programación orientada a agentes sin ningún recurso adicional. No se necesita, en absoluto, ningún lenguaje específico que contemple los sistemas de agentes ni ningún sistema de representación del conocimiento. Con MENTAL todo es más sencillo.

Aspectos a destacar en el desarrollo con agentes con MENTAL son los siguientes: MENTAL también permite el desarrollo de recursos de alto nivel como:

Adenda

FIPA (Foundation for Intelligent Physical Agents)

Es la organización que define los estándares en ingeniería de software orientada a agentes: las ontologías (es decir, los conceptos y sus relaciones), los protocolos de interacción entre agentes, etc. Su dirección Web es: http://www.fipa.org


Bibliografía